package com.android.nearshop.app.adapter.listadapter;

import android.content.Context;
import android.widget.AbsListView;
import android.widget.ListView;

/*******************************************************
 * @author: zhaohua
 * @version: 2012-8-23
 * @see: list view 下滑自动载入 Adapter
 * @Copyright : copyrights reserved by personal 2007-2012
 * @param <T>
*******************************************************/
public abstract class LoadableListAdapter<T> 
extends DomoreListAdapter<T>
implements AbsListView.OnScrollListener
{
	public LoadableListAdapter(
            Context context,  
            ListView listView,
            DataLoaderHandler<T> handler)
    {
        super(context,listView,handler);
        mListView.setOnScrollListener(this);
        isDoMoreMode = false;
    }
    
    /** 屏蔽掉 onScroll */
    public void onScroll(AbsListView view, int first, int count, int total)
    {
        
    }
    
    
    /** 重载 scroll 的状态，当为SCROLL_STATE_IDLE 时处理数据 */
    public void onScrollStateChanged(final AbsListView view, final int scrollState)
    {        
        // 不是list view时也无效
        if( mListView == null || mListView.getCount() < 5) return;
        // 下拉触发时，有效
        switch (scrollState)
        {
        case SCROLL_STATE_IDLE:
            {
                // list view中可见的地item的位置
                final int first = mListView.getFirstVisiblePosition()-1;
                // list view一屏幕可显示item的数量
                final int count = mListView.getChildCount();
                // 当前list view载入的item的总数
                final int total = getCount();
                // 当list view还没有显示完所有数据时 或者 当数据正在后台载入，不处理
                if (first + count < total || mDataLoaderHandler.isLoading()) 
                    return;
                // 还有数据可处理
                loadShowNext();
                break;
            }
        }
    }
}
